#include <iostream>

using namespace std;

const int MAX = 1e6 + 10;
int N;
int K;
int q[MAX] = {0};

//超时了,应使用差分思想
/* //在x，y之间的草堆上堆草堆
void duiCaoDui(int x, int y){
    for(int i = x - 1; i < y; i++){
        q[i] ++;
    }
} */

//快排
int quickSort(int q[], int l, int r) {
    if(l >= r) return 0;


    int x = q[l], i = l - 1, j = r + 1;
    while(i < j){
        do i++;   while(q[i] < x);
        do j--;   while(q[j] > x);
        if(i < j) swap(q[i], q[j]);
    }

    quickSort(q, l, j);
    quickSort(q, j + 1, r);
}


int main(){
    scanf("%d%d", &N, &K);

    //初始化差分数组
    for(int i = 1; i <= K; i++){
        int l, r;
        scanf("%d%d", &l, &r);
        q[l] ++;
        q[r + 1] --;
    }
    //求出差分数组的前缀和，即为当前数组的值
    for(int i = 1; i <= N; i++){
        q[i] += q[i - 1];
    }

    quickSort(q, 1, N);

    cout << q[N / 2 + 1] << endl;
    return 0;

}